package org.dromara.hm.domain.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.poi.hpsf.Decimal;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.hm.domain.HmCustomer;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 客户信息业务对象 hm_customer
 *
 * @author zy Hu
 * @date 2024-12-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = HmCustomer.class, reverseConvertGenerate = false)
public class HmCustomerBo extends BaseEntity {

    /**
     * 客户id
     */
    private Long customerId;

    /**
     * 客户名称
     */
    @NotBlank(message = "客户名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String customerName;

    /**
     * 客户年龄
     */
    private String customerAge;

    /**
     * 客户性别
     */
    //@NotBlank(message = "客户性别不能为空", groups = { AddGroup.class, EditGroup.class })
    private String customerSex;

    /**
     * 客户出生年月
     */
   // @NotBlank(message = "客户出生年月不能为空", groups = { AddGroup.class, EditGroup.class })
    @JsonFormat(pattern = "yyyy/MM/dd")
    private String customerBirth;

    /**
     * 客户生日
     */
   // @NotBlank(message = "客户生日不能为空", groups = { AddGroup.class, EditGroup.class })

    private String customerBirthday;

    /**
     * 生日类型
     */
    private String birthdayType;

    /**
     * 政治面貌
     */
    private String political;

    /**
     * 籍贯
     */
    private String nativePlace;

    /**
     * 现住址
     */
   // @NotBlank(message = "现住址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String address;

    /**
     * 兴趣爱好
     */
    private String hobby;

    /**
     * 特长
     */
    private String specially;

    /**
     * 退休单位
     */
    private String retiredUnit;

    /**
     * 职称
     */
    private String title;

    /**
     * 结婚日
     */
    private String weddingDay;

    /**
     * 结婚日类型
     */
    private String weddingDayType;

    /**
     * 电话
     */
    @NotBlank(message = "电话不能为空", groups = { AddGroup.class, EditGroup.class })
    private String phone;

    /**
     * 家庭角色(是否做主)
     */
   // @NotNull(message = "是否做主不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isBoss;

    /**
     * 退休金
     */
    private BigDecimal pension;

    /**
     * 既往病史
     */
    private String medicalHistory;

    /**
     * 身体状况
     */
    private String physicalCondition;

    /**
     * 是否养生保健
     */
    private String isHealthCare;

    /**
     * 服用产品
     */
    private String takingProducts;

    /**
     * 服用产品描述
     */
    private String takingProductsDesc;

    /**
     * 为什么购买
     */
    private String whyBuy;

    /**
     * 购买方式
     */
    private String buyMethod;

    /**
     * 购买人
     */
   // @NotBlank(message = "购买人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String buyer;

    /**
     * 积分币
     */
    private Long pointsCoin;

    /**
     * 积分标识
     */
    private Long pointsCoinId;

    /**
     * 会员等级
     */
    private String memberLevel;

    /**
     * 客户类型
     */
   // @NotBlank(message = "客户类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String customerType;

    /**
     * 客户活跃度
     */
    private String customerActivity;

    /**
     * 服务员工名称
     */
    private String staffName;

    /**
     * 服务员工标识
     */
  //  @NotNull(message = "服务员工不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long staffId;

    /**
     * 服务店铺名称
     */
    private String storeName;

    /**
     * 服务店铺标识
     */
    @NotNull(message = "服务店铺不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long storeId;

    /**
     * 家庭关系类型
     */
    private String familyType;

    /**
     * 家庭标识
     */
    private Long familyId;

    /**
     * 家庭名称
     */
    private String familyName;

    /**
     * 状态
     */
    private String status;

    /**
     * 备注
     */
    private String remark;

    /**
     * 是否为公海用户
     */
    private Boolean isPublic;

    /**
     * 最后维护时间
     */
    private String lastMaintainDate;

    /**
     * 批量处理人员集合
     */
    private List<HmCustomerBo> customerList;

    /**
     * 事件动作
     */
    private String eventAction;

    /**
     * 服务人员集合
     * @param staffId
     */
    private List<Long> staffIds;

}
